package com.project.service;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;

import java.util.List;

/**
 * 员工业务接口
 */
public interface IEmployeeService {
    /**
     * 添加员工
     * @param em 员工对象
     */
    void add(EmployeeBean em);

    /**
     * 按id员工离职（将员工状态修改为离职），同时该员工的正在进行的项目（项目完成时间为”未完成“）进度结束时间修改为现在
     * @param id 员工id
     * @param status 员工状态
     */
    void update(int id,String status);

    /**
     * 按id修改员工信息
     * @param id 员工id
     * @param phone 员工手机号
     * @param money 员工新工资
     */
    void updateInfo(int id,String phone,int money);

    /**
     * 按id查询员工，同时查询员工参与所有的项目信息
     * @param id 员工id
     * @return 员工对象
     */
    EmployeeBean findById(int id);

    /**
     * 动态条件分页查询员工，同时按选择条件将结果进行排序
     * @param pageNO  页码
     * @param name 员工姓名
     * @param speciality 员工专长
     * @param status 员工状态
     * @param orderItem 排序条件
     * @return 分页对象
     */
    PageInfo<EmployeeBean> findByItem(int pageNO,String name, String speciality, String status, String orderItem);

    int PAGE_SIZE = 3;
    /**
     * 动态查询没参与指定项目的在职人员
     * 其中项目id和员工状态为固定条件，姓名和专长为动态条件
     * @param proId 项目id
     * @param name 员工姓名
     * @param speciality 专长
     * @return 员工列表
     */
    List<EmployeeBean> findOther(int proId,String name,String speciality);

    /**
     * 按id查询员工信息，同时查询该员工正在进行的项目名称。以及项目的开始时间
     * @param id 员工id
     * @return 员工对象
     */
    EmployeeBean findByIdRunTime(int id);
}
